// Use data from mapdata.js with fallback
const { branchData, regionData, svgRegionMapping, mapConfig } = window.MapData || {
branchData: {
surabaya: {
title: "Cabang Surabaya",
address: "Jl. Tunjungan No. 45, Surabaya 60275",
phone: "031-9876543",
email: "surabaya@ptlenko.com",
hours: "Senin - Jumat: 08:00 - 17:00, Sabtu: 08:00 - 12:00",
region: "java"
},
medan: {
title: "Cabang Medan",
address: "Jl. Gatot Subroto No. 78, Medan 20112",
phone: "061-1122334",
email: "medan@ptlenko.com",
hours: "Senin - Jumat: 08:00 - 17:00, Sabtu: 08:00 - 12:00",
region: "sumatra"
},
makassar: {
title: "Cabang Makassar",
address: "Jl. Veteran Selatan No. 12, Makassar 90231",
phone: "0411-9988776",
email: "makassar@ptlenko.com",
hours: "Senin - Jumat: 08:00 - 17:00, Sabtu: 08:00 - 12:00",
region: "sulawesi"
}
},
regionData: {
sumatra: {
title: "Sumatra",
description: "Pulau terbesar keenam di dunia dengan kekayaan alam yang melimpah",
branches: ["medan"],
status: "active"
},
java: {
title: "Jawa",
description: "Pulau terpadat di Indonesia dengan pusat pemerintahan dan ekonomi",
branches: ["surabaya"],
status: "active"
},
kalimantan: {
title: "Kalimantan",
description: "Pulau terbesar ketiga di dunia dengan hutan tropis yang luas",
branches: [],
status: "coming-soon"
},
sulawesi: {
title: "Sulawesi",
description: "Pulau dengan bentuk unik dan keanekaragaman hayati yang tinggi",
branches: ["makassar"],
status: "active"
},
papua: {
title: "Papua",
description: "Pulau terbesar kedua di dunia dengan keanekaragaman budaya yang kaya",
branches: [],
status: "coming-soon"
}
},
svgRegionMapping: {},
mapConfig: {
viewBox: "0 0 1000 600",
width: "100%",
height: "100%",
defaultFill: "#e8f4fd",
defaultStroke: "#1e40af",
defaultStrokeWidth: "2",
hoverFill: "#dc2626",
hoverStroke: "#ef4444",
hoverStrokeWidth: "3"
}
};
// DOM Elements
const hamburger = document.querySelector('.hamburger');
const navMenu = document.querySelector('.nav-menu');
const scrollToTopBtn = document.querySelector('.scroll-to-top');
// Mobile navigation toggle
if (hamburger && navMenu) {
hamburger.addEventListener('click', () => {
const isActive = hamburger.classList.contains('active');
hamburger.classList.toggle('active');
navMenu.classList.toggle('active');
// Update ARIA attributes for accessibility
hamburger.setAttribute('aria-expanded', !isActive);
navMenu.setAttribute('aria-hidden', isActive);
});
// Close mobile menu when clicking on a link
document.querySelectorAll('.nav-link').forEach(n => n.addEventListener('click', () => {
hamburger.classList.remove('active');
navMenu.classList.remove('active');
hamburger.setAttribute('aria-expanded', 'false');
navMenu.setAttribute('aria-hidden', 'true');
}));
// Close mobile menu when clicking outside
document.addEventListener('click', (e) => {
if (!hamburger.contains(e.target) && !navMenu.contains(e.target)) {
hamburger.classList.remove('active');
navMenu.classList.remove('active');
}
});
}
// Smooth scrolling for navigation links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Scroll to top functionality
if (scrollToTopBtn) {
window.addEventListener('scroll', () => {
if (window.pageYOffset > 300) {
scrollToTopBtn.classList.add('visible');
} else {
scrollToTopBtn.classList.remove('visible');
}
});
scrollToTopBtn.addEventListener('click', () => {
window.scrollTo({
top: 0,
behavior: 'smooth'
});
});
}
// SVG Map functionality
const branchPopup = document.getElementById('branchPopup');
const popupTitle = document.getElementById('popupTitle');
const popupAddress = document.getElementById('popupAddress');
const popupPhone = document.getElementById('popupPhone');
const popupEmail = document.getElementById('popupEmail');
const popupHours = document.getElementById('popupHours');
const popupClose = document.querySelector('.popup-close');
// Initialize interactive map
function initInteractiveMap() {
console.log('initInteractiveMap called');
// Check if required elements exist
const container = document.querySelector('.svg-container');
const loader = document.getElementById('mapLoader');
console.log('Container found:', !!container);
console.log('Loader found:', !!loader);
if (!container) {
console.error('Container not found');
return;
}
// For now, directly load fallback map to ensure it works
console.log('Loading fallback map directly');
loadFallbackMap();
// Try to load external SVG in background
loadExternalSVG().then(() => {
console.log('External SVG loaded successfully, replacing fallback');
// Replace fallback with external SVG if successful
const container = document.querySelector('.svg-container');
const existingSvg = container.querySelector('.map-svg');
if (existingSvg) {
container.removeChild(existingSvg);
}
}).catch((error) => {
console.log('External SVG failed, keeping fallback:', error);
});
}
// Load external SVG file using SVGInteractiveHandler
async function loadExternalSVG() {
try {
console.log('Loading external SVG...');
const response = await fetch('id.svg');
if (!response.ok) {
throw new Error(`Failed to load SVG: ${response.status} ${response.statusText}`);
}
const svgText = await response.text();
console.log('SVG loaded, parsing...');
// Use SVGInteractiveHandler to make SVG interactive
const svgHandler = new SVGInteractiveHandler();
const svgElement = svgHandler.init(svgText, regionData, branchData);
if (svgElement) {
console.log('SVG parsed and made interactive successfully');
// Add SVG to container
const container = document.querySelector('.svg-container');
if (container) {
container.appendChild(svgElement);
console.log('Interactive SVG added to container');
return Promise.resolve();
} else {
throw new Error('Container not found');
}
} else {
throw new Error('Failed to create interactive SVG');
}
} catch (error) {
console.error('Error loading SVG:', error);
// Fallback to simple map
loadFallbackMap();
return Promise.reject(error);
}
}
// Add interactive regions to SVG using mapdata
function addInteractiveRegionsFromMapData(svgElement) {
// Find all path elements and add region classes
const paths = svgElement.querySelectorAll('path');
// Try to match paths by ID first, then by position
paths.forEach((path, index) => {
const pathId = path.getAttribute('id');
let regionName = null;
// Check if path ID matches any in svgRegionMapping
if (pathId && svgRegionMapping[pathId]) {
regionName = svgRegionMapping[pathId];
} else {
// Fallback to position-based mapping
const regionNames = ['sumatra', 'java', 'kalimantan', 'sulawesi', 'papua'];
regionName = regionNames[index];
}
if (regionName && regionData[regionName]) {
const region = regionData[regionName];
path.setAttribute('class', 'region');
path.setAttribute('data-region', regionName);
path.setAttribute('fill', mapConfig.defaultFill);
path.setAttribute('stroke', mapConfig.defaultStroke);
path.setAttribute('stroke-width', mapConfig.defaultStrokeWidth);
// Add title for accessibility
path.setAttribute('title', region.title);
}
});
}
// Legacy function for backward compatibility
function addInteractiveRegions(svgElement) {
addInteractiveRegionsFromMapData(svgElement);
}
// Fallback map if external SVG fails
function loadFallbackMap() {
console.log('Loading fallback map...');
const container = document.querySelector('.svg-container');
const loader = document.getElementById('mapLoader');
if (!container) {
console.error('Container not found for fallback');
return;
}
// Remove loader if it exists
if (loader && loader.parentNode) {
container.removeChild(loader);
console.log('Loader removed');
}
// Create fallback SVG using mapConfig
// const fallbackSVG = document.createElement('div');
// fallbackSVG.innerHTML = `
//
// `;
//
// const svgElement = fallbackSVG.firstElementChild;
// container.appendChild(svgElement);
console.log('Fallback map added to container');
// Initialize interactions
setTimeout(() => {
initRegionInteractions();
console.log('Region interactions initialized');
}, 100);
}
function initRegionInteractions() {
// Get regions from SVG
const regions = document.querySelectorAll('.region');
regions.forEach((region, index) => {
const regionName = region.getAttribute('data-region');
if (regionName) {
region.addEventListener('mouseenter', (e) => {
showRegionPopup(regionName, region);
});
region.addEventListener('mouseleave', () => {
hideBranchPopup();
});
region.addEventListener('click', (e) => {
e.preventDefault();
showRegionPopup(regionName, region);
});
}
});
// Close popup when clicking close button
if (popupClose) {
popupClose.addEventListener('click', hideBranchPopup);
}
// Close popup when clicking outside
document.addEventListener('click', (e) => {
if (!branchPopup.contains(e.target) && !e.target.closest('.region')) {
hideBranchPopup();
}
});
}
function showRegionPopup(regionName, region) {
const regionInfo = regionData[regionName];
if (!regionInfo) return;
// Update popup content based on region
popupTitle.textContent = regionInfo.title;
if (regionInfo.branches.length > 0) {
// Show branch information if available
const branch = branchData[regionInfo.branches[0]];
popupAddress.textContent = branch.address;
popupPhone.textContent = branch.phone;
popupEmail.textContent = branch.email;
popupHours.textContent = branch.hours;
// Add additional info if available
if (branch.description) {
popupAddress.innerHTML = `${branch.address} ${branch.description}`;
}
} else {
// Show region information for areas without branches
popupAddress.innerHTML = `
${regionInfo.title}
${regionInfo.description}
Populasi: ${regionInfo.population} Luas: ${regionInfo.area} Status: ${regionInfo.status === 'coming-soon' ? 'Segera Hadir' : 'Aktif'}
`;
popupPhone.textContent = "Segera hadir";
popupEmail.textContent = "info@ptlenko.com";
popupHours.textContent = "Dalam pengembangan";
}
// Position popup near the region
const rect = region.getBoundingClientRect();
const mapRect = document.querySelector('.indonesia-map').getBoundingClientRect();
let left = rect.left + rect.width / 2 - 150; // Center horizontally
let top = rect.top - 200; // Position above the region
// Adjust if popup would go off screen
if (left < 20) left = 20;
if (left > window.innerWidth - 320) left = window.innerWidth - 320;
if (top < 20) top = rect.bottom + 10; // Position below if no space above
branchPopup.style.left = left + 'px';
branchPopup.style.top = top + 'px';
branchPopup.classList.add('active');
}
function showBranchPopup(branchId, hotspot) {
const branch = branchData[branchId];
if (!branch) return;
// Update popup content
popupTitle.textContent = branch.title;
popupAddress.textContent = branch.address;
popupPhone.textContent = branch.phone;
popupEmail.textContent = branch.email;
popupHours.textContent = branch.hours;
// Position popup near the hotspot
const rect = hotspot.getBoundingClientRect();
const mapRect = document.querySelector('.indonesia-map').getBoundingClientRect();
let left = rect.left + rect.width / 2 - 150; // Center horizontally
let top = rect.top - 200; // Position above the hotspot
// Adjust if popup would go off screen
if (left < 20) left = 20;
if (left > window.innerWidth - 320) left = window.innerWidth - 320;
if (top < 20) top = rect.bottom + 10; // Position below if no space above
branchPopup.style.left = left + 'px';
branchPopup.style.top = top + 'px';
branchPopup.classList.add('active');
}
function hideBranchPopup() {
branchPopup.classList.remove('active');
branchPopup.setAttribute('aria-hidden', 'true');
}
// Initialize map when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
console.log('DOM loaded, initializing map...');
console.log('MapData available:', !!window.MapData);
console.log('Branch data:', branchData);
console.log('Region data:', regionData);
// Add a small delay to ensure all elements are ready
setTimeout(() => {
initInteractiveMap();
}, 100);
});
// Also try to initialize after a short delay as backup
setTimeout(() => {
const loader = document.getElementById('mapLoader');
if (loader && loader.parentNode) {
console.log('Backup initialization triggered');
loadFallbackMap();
}
}, 2000);
// Form validation
function validateForm(formId) {
const form = document.getElementById(formId);
if (!form) return false;
const inputs = form.querySelectorAll('input[required], textarea[required]');
let isValid = true;
inputs.forEach(input => {
if (!input.value.trim()) {
input.classList.add('error');
isValid = false;
} else {
input.classList.remove('error');
}
});
return isValid;
}
// Contact form submission with accessibility
const contactForm = document.getElementById('contactForm');
if (contactForm) {
contactForm.addEventListener('submit', (e) => {
e.preventDefault();
// Clear previous errors
clearFormErrors();
if (validateFormWithAccessibility('contactForm')) {
// Show success message
alert('Terima kasih! Pesan Anda telah dikirim. Kami akan menghubungi Anda segera.');
contactForm.reset();
}
});
}
// Enhanced form validation with accessibility
function validateFormWithAccessibility(formId) {
const form = document.getElementById(formId);
const requiredFields = form.querySelectorAll('[required]');
let isValid = true;
requiredFields.forEach(field => {
const fieldName = field.name;
const fieldValue = field.value.trim();
// Clear previous error
clearFieldError(fieldName);
if (!fieldValue) {
showFieldError(fieldName, 'Field ini wajib diisi');
isValid = false;
} else if (field.type === 'email' && !isValidEmail(fieldValue)) {
showFieldError(fieldName, 'Mohon masukkan alamat email yang valid');
isValid = false;
}
});
if (!isValid) {
// Focus on first error field
const firstError = form.querySelector('.error-message.show');
if (firstError) {
const field = firstError.previousElementSibling;
field.focus();
}
}
return isValid;
}
function showFieldError(fieldName, message) {
const field = document.getElementById(fieldName);
const errorElement = document.getElementById(fieldName + '-error');
if (errorElement) {
errorElement.textContent = message;
errorElement.classList.add('show');
}
field.setAttribute('aria-invalid', 'true');
}
function clearFieldError(fieldName) {
const errorElement = document.getElementById(fieldName + '-error');
if (errorElement) {
errorElement.textContent = '';
errorElement.classList.remove('show');
}
const field = document.getElementById(fieldName);
field.setAttribute('aria-invalid', 'false');
}
function clearFormErrors() {
const errorElements = document.querySelectorAll('.error-message');
errorElements.forEach(error => {
error.textContent = '';
error.classList.remove('show');
});
const fields = document.querySelectorAll('input, select, textarea');
fields.forEach(field => {
field.setAttribute('aria-invalid', 'false');
});
}
// Newsletter subscription
const newsletterForm = document.getElementById('newsletterForm');
if (newsletterForm) {
newsletterForm.addEventListener('submit', (e) => {
e.preventDefault();
const email = newsletterForm.querySelector('input[type="email"]').value;
if (email) {
alert('Terima kasih! Anda telah berhasil berlangganan newsletter kami.');
newsletterForm.reset();
}
});
}
// Animation on scroll
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
// Observe elements for animation
document.addEventListener('DOMContentLoaded', () => {
const animatedElements = document.querySelectorAll('.about-content, .news-card, .contact-content');
animatedElements.forEach(el => {
el.style.opacity = '0';
el.style.transform = 'translateY(30px)';
el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
observer.observe(el);
});
});
// ============================================
// News Data and Functions
// ============================================
// News data
//const newsData = [
// {
// id: 1,
// title: "PT Lenko Surya Perkasa Membuka Cabang Baru di Makassar",
// slug: "pt-lenko-surya-perkasa-membuka-cabang-baru-di-makassar",
// excerpt: "PT Lenko Surya Perkasa dengan bangga mengumumkan pembukaan cabang baru di Makassar untuk memperluas jangkauan distribusi produk farmasi di wilayah Indonesia Timur.",
// content: "PT Lenko Surya Perkasa, distributor utama produk farmasi terkemuka di Indonesia, dengan bangga mengumumkan pembukaan cabang baru di Makassar, Sulawesi Selatan. Cabang baru ini merupakan langkah strategis untuk memperluas jangkauan distribusi produk farmasi berkualitas tinggi ke seluruh wilayah Indonesia Timur.\n\nCabang Makassar berlokasi di Jl. Veteran Selatan No. 12, Makassar 90231, dan dilengkapi dengan fasilitas gudang modern dengan sistem penyimpanan yang memenuhi standar Good Distribution Practice (GDP). Cabang ini akan melayani kebutuhan distribusi produk farmasi untuk rumah sakit, apotek, dan klinik di seluruh Sulawesi.\n\nDengan pembukaan cabang ini, PT Lenko Surya Perkasa kini memiliki tiga cabang strategis di Indonesia: Surabaya (Jawa Timur), Medan (Sumatra Utara), dan Makassar (Sulawesi Selatan).",
// category: "Perusahaan",
// date: "2024-01-15",
// author: "Admin PT Lenko",
// image: "lenko.png"
// },
// {
// id: 2,
// title: "Inovasi Sistem Distribusi Digital untuk Efisiensi Lebih Baik",
// slug: "inovasi-sistem-distribusi-digital-untuk-efisiensi-lebih-baik",
// excerpt: "PT Lenko Surya Perkasa meluncurkan sistem distribusi digital terbaru yang memungkinkan pelanggan untuk memesan produk secara online dengan lebih mudah dan efisien.",
// content: "PT Lenko Surya Perkasa terus berinovasi dalam meningkatkan kualitas layanan distribusi produk farmasi. Kali ini, perusahaan meluncurkan sistem distribusi digital terbaru yang dirancang untuk memberikan pengalaman yang lebih baik bagi pelanggan.\n\nSistem baru ini memungkinkan rumah sakit, apotek, dan klinik untuk memesan produk farmasi secara online melalui platform digital yang user-friendly. Fitur-fitur utama dari sistem ini meliputi:\n\n1. Pemesanan Online Real-time: Pelanggan dapat melihat ketersediaan stok produk secara real-time dan melakukan pemesanan dengan mudah.\n\n2. Tracking Pengiriman: Sistem pelacakan yang memungkinkan pelanggan untuk memantau status pengiriman produk mereka.\n\n3. Manajemen Inventori: Dashboard yang membantu pelanggan mengelola inventori mereka dengan lebih efisien.\n\n4. Laporan Otomatis: Generasi laporan penjualan dan pembelian secara otomatis untuk analisis yang lebih baik.\n\nSistem ini telah diuji coba di cabang Surabaya dan akan segera diterapkan di semua cabang PT Lenko Surya Perkasa.",
// category: "Teknologi",
// date: "2024-01-10",
// author: "Tim IT PT Lenko",
// image: "lenko.png"
// },
// {
// id: 3,
// title: "Kerjasama dengan Produsen Farmasi Internasional",
// slug: "kerjasama-dengan-produsen-farmasi-internasional",
// excerpt: "PT Lenko Surya Perkasa menandatangani perjanjian kerjasama dengan produsen farmasi internasional terkemuka untuk mendistribusikan produk-produk berkualitas tinggi di Indonesia.",
// content: "PT Lenko Surya Perkasa dengan bangga mengumumkan penandatanganan perjanjian kerjasama strategis dengan beberapa produsen farmasi internasional terkemuka. Kerjasama ini bertujuan untuk memperluas portofolio produk farmasi berkualitas tinggi yang didistribusikan di Indonesia.\n\nMelalui kerjasama ini, PT Lenko Surya Perkasa akan menjadi distributor eksklusif untuk berbagai produk farmasi inovatif yang telah terbukti efektif dan aman digunakan. Produk-produk ini mencakup:\n\n- Obat-obatan generik berkualitas tinggi\n- Suplemen dan vitamin premium\n- Produk kesehatan khusus\n- Alat kesehatan medis\n\nKerjasama ini tidak hanya memperkuat posisi PT Lenko Surya Perkasa sebagai distributor utama di Indonesia, tetapi juga memberikan akses yang lebih luas bagi masyarakat Indonesia terhadap produk-produk farmasi berkualitas internasional dengan harga yang kompetitif.\n\nDirektur Utama PT Lenko Surya Perkasa menyatakan bahwa kerjasama ini merupakan bagian dari komitmen perusahaan untuk terus memberikan nilai terbaik bagi pelanggan dan berkontribusi pada peningkatan kualitas layanan kesehatan di Indonesia.",
// category: "Kerjasama",
// date: "2024-01-05",
// author: "Tim Corporate PT Lenko",
// image: "lenko.png"
// },
// {
// id: 4,
// title: "Pelatihan Good Distribution Practice untuk Tim Distribusi",
// slug: "pelatihan-good-distribution-practice-untuk-tim-distribusi",
// excerpt: "PT Lenko Surya Perkasa menyelenggarakan pelatihan Good Distribution Practice (GDP) untuk seluruh tim distribusi guna memastikan standar kualitas tertinggi dalam distribusi produk farmasi.",
// content: "Sebagai komitmen terhadap kualitas dan keamanan produk farmasi, PT Lenko Surya Perkasa menyelenggarakan pelatihan Good Distribution Practice (GDP) untuk seluruh tim distribusi dari semua cabang.\n\nPelatihan ini diikuti oleh lebih dari 100 karyawan yang terlibat dalam proses distribusi, mulai dari tim gudang, logistik, hingga sales representative. Materi pelatihan mencakup:\n\n1. Prinsip-prinsip Good Distribution Practice (GDP)\n2. Manajemen suhu dan penyimpanan produk farmasi\n3. Prosedur penanganan produk yang benar\n4. Dokumentasi dan pelacakan produk\n5. Penanganan produk yang rusak atau kadaluarsa\n6. Keamanan dan kontrol kualitas\n\nPelatihan ini dipandu oleh instruktur bersertifikat dan diselenggarakan selama 3 hari dengan kombinasi teori dan praktik. Setelah pelatihan, seluruh peserta akan mengikuti ujian untuk mendapatkan sertifikat GDP.\n\nDirektur Operasional PT Lenko Surya Perkasa menekankan pentingnya pelatihan ini untuk memastikan bahwa setiap produk farmasi yang didistribusikan memenuhi standar kualitas dan keamanan tertinggi, sehingga dapat memberikan manfaat optimal bagi pasien.",
// category: "Pelatihan",
// date: "2023-12-28",
// author: "Tim HR PT Lenko",
// image: "lenko.png"
// },
// {
// id: 5,
// title: "Program CSR: Donasi Produk Farmasi untuk Daerah Terpencil",
// slug: "program-csr-donasi-produk-farmasi-untuk-daerah-terpencil",
// excerpt: "PT Lenko Surya Perkasa meluncurkan program Corporate Social Responsibility (CSR) dengan memberikan donasi produk farmasi untuk daerah-daerah terpencil di Indonesia.",
// content: "Sebagai bentuk tanggung jawab sosial perusahaan, PT Lenko Surya Perkasa meluncurkan program Corporate Social Responsibility (CSR) yang berfokus pada peningkatan akses kesehatan di daerah-daerah terpencil di Indonesia.\n\nProgram ini dimulai dengan donasi produk farmasi esensial ke beberapa puskesmas dan klinik di daerah terpencil di Sulawesi dan Kalimantan. Produk-produk yang didonasikan meliputi:\n\n- Obat-obatan dasar\n- Vitamin dan suplemen\n- Alat kesehatan sederhana\n- Produk perawatan kesehatan\n\nSelain donasi produk, PT Lenko Surya Perkasa juga mengirimkan tim medis untuk memberikan edukasi kesehatan kepada masyarakat di daerah tersebut. Program edukasi mencakup:\n\n1. Penggunaan obat yang benar dan aman\n2. Pencegahan penyakit menular\n3. Pola hidup sehat\n4. Manajemen kesehatan keluarga\n\nProgram CSR ini merupakan komitmen jangka panjang PT Lenko Surya Perkasa untuk berkontribusi pada peningkatan kualitas hidup masyarakat Indonesia, khususnya di daerah-daerah yang memiliki akses terbatas terhadap layanan kesehatan.\n\nDirektur Utama menyatakan bahwa program ini akan terus berlanjut dan diperluas ke lebih banyak daerah di masa depan.",
// category: "CSR",
// date: "2023-12-20",
// author: "Tim CSR PT Lenko",
// image: "lenko.png"
// },
// {
// id: 6,
// title: "Peningkatan Kapasitas Gudang di Cabang Surabaya",
// slug: "peningkatan-kapasitas-gudang-di-cabang-surabaya",
// excerpt: "PT Lenko Surya Perkasa melakukan ekspansi gudang di cabang Surabaya untuk meningkatkan kapasitas penyimpanan dan efisiensi distribusi produk farmasi.",
// content: "Untuk memenuhi permintaan yang terus meningkat, PT Lenko Surya Perkasa melakukan ekspansi gudang di cabang Surabaya. Ekspansi ini meningkatkan kapasitas penyimpanan hingga 50% dan dilengkapi dengan teknologi terbaru untuk memastikan kualitas produk.\n\nGudang baru ini dilengkapi dengan:\n\n1. Sistem pendingin otomatis untuk produk yang memerlukan suhu terkontrol\n2. Sistem manajemen inventori berbasis teknologi RFID\n3. Area penyimpanan khusus untuk produk berbahaya\n4. Sistem keamanan tingkat tinggi\n5. Sistem pemantauan suhu dan kelembaban real-time\n\nEkspansi ini memungkinkan PT Lenko Surya Perkasa untuk menyimpan lebih banyak variasi produk dan melayani lebih banyak pelanggan dengan efisiensi yang lebih tinggi. Gudang baru juga dirancang dengan mempertimbangkan aspek keberlanjutan lingkungan dengan penggunaan energi yang lebih efisien.\n\nProyek ekspansi ini memakan waktu 6 bulan dan telah selesai pada akhir tahun 2023. Dengan kapasitas yang lebih besar, cabang Surabaya kini dapat melayani kebutuhan distribusi untuk seluruh wilayah Jawa Timur dan sekitarnya dengan lebih baik.",
// category: "Infrastruktur",
// date: "2023-12-15",
// author: "Tim Operasional PT Lenko",
// image: "lenko.png"
// }
//];
// News pagination settings
const NEWS_PER_PAGE = 6;
let currentNewsPage = 1;
// Load and display news
function loadNews() {
const newsGrid = document.getElementById('newsGrid');
const noResults = document.getElementById('noResults');
if (!newsGrid) return;
// Calculate pagination
const totalNews = newsData.length;
const totalPages = Math.ceil(totalNews / NEWS_PER_PAGE);
const startIndex = (currentNewsPage - 1) * NEWS_PER_PAGE;
const endIndex = startIndex + NEWS_PER_PAGE;
const currentNews = newsData.slice(startIndex, endIndex);
// Clear grid
newsGrid.innerHTML = '';
// Display news or no results
if (currentNews.length === 0) {
if (noResults) noResults.style.display = 'block';
newsGrid.style.display = 'none';
} else {
if (noResults) noResults.style.display = 'none';
newsGrid.style.display = 'grid';
currentNews.forEach(news => {
const newsCard = createNewsCard(news);
newsGrid.appendChild(newsCard);
});
}
// Update pagination
updateNewsPagination(totalPages);
updateNewsPaginationInfo(startIndex + 1, Math.min(endIndex, totalNews), totalNews);
}
// Create news card element
function createNewsCard(news) {
const card = document.createElement('article');
card.className = 'news-card';
card.setAttribute('role', 'article');
const date = new Date(news.date);
const formattedDate = date.toLocaleDateString('id-ID', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
// Escape HTML to prevent XSS
const escapeHtml = (text) => {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
};
const newsDetailUrl = `news/${news.slug}`;
card.innerHTML = `